iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 14
0
Data Technology

Microsoft R Solution系列 第 14

Day14 - MSSQL R Service Part2 參數化Store Procedure與繪圖

  • 分享至 

  • xImage
  •  

Stored Procedure 幾乎是有在用資料庫的必備技能點, 而Stored Procedure有一個常用的功能就是參數化然後取得結果, 其實就是類似寫程式Function的概念, 所以先來寫個簡單的, 宣告a, b兩個整數變數, 傳進R裡做相加, 從R回傳相加結果, 在SSMS輸入底下程式碼並執行
https://ithelp.ithome.com.tw/upload/images/20180101/20103333z3X9StxIKk.png

這邊有兩個眉角要注意的是@params, 它負責對應MSSQL定義的變數與 R裡面變數, 另一個是OutputDataSet委派的類型必須是data frame.

那接下來做複雜一點加工, 改用R的rnorm函數來隨機產生數值, rnorm的說明如下:

rnorm(n, mean = 0, sd = 1)

n 為產生隨機值個數(長度), mean 是平均數, sd 是標準差
將程式碼修改如下
https://ithelp.ithome.com.tw/upload/images/20180101/20103333aTb646c5Di.png

看來沒甚麼問題, 再來小修一下並執行, 建立一個mytest的Stored Procedure如下
https://ithelp.ithome.com.tw/upload/images/20180101/201033330eypINsr97.png

接者到tempdb下, 檢查mytest是否正確被建立?
https://ithelp.ithome.com.tw/upload/images/20180101/20103333ohQ3YSnOad.png

然後執行mytest, 看是否成功?
https://ithelp.ithome.com.tw/upload/images/20180101/20103333aXArI2VltZ.png

接下來的重頭戲是如何處理R Plot的圖形呢? 這邊我們拿前一篇安裝好的ggplot2來實作一下, 修改程式碼如下
https://ithelp.ithome.com.tw/upload/images/20180101/20103333Ef4ZtN45EU.png

這邊要注意一下就是在R裡面繪製的圖形, 傳出來給MSSQL時, 必須是binary, 然後用 varbinary(max)去接, 然後SSMS的Results就是顯示binary的資料, 那我們如何視覺化binary的資料呢? 有一個最快的方式就是安裝SSMSBoost, 它是SSMS的一個add-in, 有提供Community (Free) 與 Professional的版本, 一開始下載後可以免費試用30天, 之後有可以申請 Community Key或是購買Professional的版本, 參考如下
http://www.ssmsboost.com/VersionCompare

所以接下來到SSMSBoost官網下載試用版
https://ithelp.ithome.com.tw/upload/images/20180101/201033330KvSZZ6rYh.png

執行安裝程式, 下一步直接安裝到底, 然後重啟SSMS
https://ithelp.ithome.com.tw/upload/images/20180101/20103333DBviNcp221.png

再把剛剛的程式碼執行一遍, 在varbinary的欄位上, 按下右鍵內容, 選擇Picture( any format)如下
https://ithelp.ithome.com.tw/upload/images/20180101/20103333bnRXU1EtLV.png

接著就會在小畫家看到這張圖囉!/images/emoticon/emoticon34.gif
https://ithelp.ithome.com.tw/upload/images/20180101/20103333ae5UdrCSKL.png

打完收工

本文參考
https://www.r-bloggers.com/using-parameter-and-multiparameters-with-sp_execute_external_script/
https://reformatcode.com/code/r/r-plot-rendering-sql-server-2016-using-spexecuteexternalscript


上一篇
Day13 - MSSQL R Service Part1 套件安裝
下一篇
Day15 - MSSQL R Service Part3 與MSSQL Table互動
系列文
Microsoft R Solution30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言